package com.itheima.d3_inner_class3;

/**
 * 匿名内部类
 */
public class Test1 {
    public static void main(String[] args) {
        // 目标：认识匿名内部类，并掌握其作用。

        //抽象类的匿名内部类
//        new Animal(); //错误写法
        new Animal(){
            @Override
            public void cry() {
                System.out.println("汪汪汪地叫～");
            }
        };

        //多态
        Animal a = new Animal() {
            @Override
            public void cry() {
                System.out.println("咯咯咯地叫～");
            }
        };

        a.cry(); //咯咯咯地叫～

//        new Animal(){
//            @Override
//            public void cry() {
//                System.out.println("汪汪汪地叫～");
//            }
//        }.cry(); //汪汪汪地叫～

        //接口的匿名内部类
        new Fly(){
            @Override
            public void fly() {
                System.out.println("小鸟在飞～");
            }
        };
    }
}


abstract class Animal {
    public abstract void cry();
}

interface Fly {
    void fly();
}

//class Bird implements Fly {
//    @Override
//    public void fly() {
//        System.out.println("小鸟在飞～");
//    }
//}